package org.apcs.pokemon.pokemon;

/**
 * Author:			Zachary Reed
 * Date Created:	Mar 27, 2010
 * Last Modified:	Mar 28, 2010
 * Package:			org.apcs.pokemon.pokemon
 * Filename:		Blastoise.java
 * Description:		A class that defines the default stats for Blastoise &
 * 					constructs new Blastoise pokemon.
 */

/** Blastoise
 * Number:			008							Base HP:  79	HP Yield:   0
 * M/F Ratio:		87.5% male					Base AT:  83	AT Yield:   0
 * Type(s):			Water						Base DE: 100	DE Yield:   0
 * Exp @ lvl 100:	1,059,860					Base SA:  85	SA Yield:   0
 * Evolves @ lvl:	None          				Base SD: 105	SD Yield:   3
 * Evolves into:	None    					Base SP:  78	SP Yield:   0
 * Base moves:		None            							XP Yield: 210
 */

public class Blastoise extends Pokemon {

    protected static final int NUMBER               =	9;
	protected static final String NAME              =	"Blastoise";
	protected static final double MFRATIO           =	87.5;
	protected static final int[] TYPES              =	{2,2};
	protected static final int[] STATS              =	{79,83,100,85,105,78};
	protected static final int[] EVYIELDS           =	{0,0,0,0,3,0,210};
	protected static final int EXPTYPE              =	3;
	protected static final int EVOLVES_AT_LVL       =	-1;
	protected static final int EVOLVES_INTO         =	-1;
	protected static final int[] BASE_MOVES         =	{-1};
    protected static final int[][] LEVEL_UP_MOVES   =   {{4,39},{7,145},{10,110},{13,55},{16,44},{20,229},{24,182},{28,352},{32,401},{39,130},{46,240},{46,334},{53,56},{53,240},{60,56}};
    protected static final int[] TMHM_MOVES         =   {264,352,46,92,258,237,58,59,63,182,240,218,231,89,216,91,280,104,317,263,290,156,213,411,362,374,203,416,419,360,445,157,363,207,164,430,57,70,250,249,127,431};

	/* Create new Blastoise with default name */
	public Blastoise(int trainerID) {
		super(NUMBER,NAME,false,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Blastoise with nickname */
	public Blastoise(String name,int trainerID) {
		super(NUMBER,name,true,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Blastoise with default name & custom level*/
	public Blastoise(int level,int trainerID) {
		super(NUMBER,NAME,false,level,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Blastoise with nickname & custom level */
	public Blastoise(String name,int level,int trainerID) {
		super(NUMBER,name,true,level,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}
}